package it.dk.view;

import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;

/**
 * Classe che rappresenta lo stato della Board.
 * 
 * Pattern utilizzato: State
 */
public abstract class GameState {
	protected DonkeyKong board;
	
	/**
	 * Costruttore della classe
	 * 
	 * @param board	riferimento alla board di gioco
	 */
	public GameState(DonkeyKong board){
		this.board = board;
	}
	
	/**
	 * Metodo che esegue l'update della logica della board in base al particolare stato
	 * 
	 * @param container		GameContainer che contiene la Board
	 * @param delta			periodo di refresh del gioco
	 */
	public abstract void update(GameContainer container, int delta);
	
	/**
	 * Metodo che esegue il render della grafica del gioco in base al particolare stato
	 * 
	 * @param container		GameContainer che contiene la Board
	 * @param g				Graphics che consente il render del generico oggetto grafico a video
	 */
	public abstract void render(GameContainer container, Graphics g);
	
	/**
	 * Metodo che esegue una particolare azione al rilascio di un tasto
	 * 
	 * @param key	codice relativo al tasto premuto
	 * @param c		carattere corrispondente al tasto premuto
	 */
	public abstract void keyReleased(int key, char c);
}
